<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="generator" content="pandoc" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
  <title>Release Notes for STM32WLxx HAL Drivers Package</title>
  <style type="text/css">
      code{white-space: pre-wrap;}
      span.smallcaps{font-variant: small-caps;}
      span.underline{text-decoration: underline;}
      div.column{display: inline-block; vertical-align: top; width: 50%;}
  </style>
  <link rel="stylesheet" href="_htmresc/mini-st_2020.css" />
  <!--[if lt IE 9]>
    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
  <![endif]-->
  <link rel="icon" type="image/x-icon" href="_htmresc/favicon.png" />
</head>
<body>
<div class="row">
<div class="col-sm-12 col-lg-4">
<center>
<h1 id="release-notes-for">Release Notes for</h1>
<h1 id="stm32wlxx-hal-drivers"><mark>STM32WLxx HAL Drivers</mark></h1>
<p>Copyright © 2020 STMicroelectronics</p>
<a href="https://www.st.com" class="logo"><img src="_htmresc/st_logo_2020.png" alt="ST logo" /></a>
</center>
<h1 id="purpose">Purpose</h1>
<p>The STM32Cube HAL and LL, an STM32 abstraction layer embedded software, ensure maximized portability across STM32 portfolio.</p>
<p>The Portable APIs layer provides a generic, multi instanced and simple set of APIs to interact with the upper layer (application, libraries and stacks). It is composed of native and extended APIs set. It is directly built around a generic architecture and allows the build-upon layers, like the middleware layer, to implement its functions without knowing in-depth the used STM32 device. This improves the library code reusability and guarantees an easy portability on other devices and STM32 families.</p>
<p>The Low Layer (LL) drivers are part of the STM32Cube firmware HAL that provide basic set of optimized and one shot services. The Low layer drivers, contrary to the HAL ones are not Fully Portable across the STM32 families; the availability of some functions depend on the physical availability of the relative features on the product. The Low Layer (LL) drivers are designed to offer the following features:</p>
<ul>
<li>New set of inline function for direct and atomic register access</li>
<li>One-shot operations that can be used by the HAL drivers or from application level.</li>
<li>Fully Independent from HAL and can be used in standalone usage (without HAL drivers)</li>
<li>Full features coverage of the all the supported peripherals.</li>
</ul>
</div>
<div class="col-sm-12 col-lg-8">
<h1 id="update-history">Update History</h1>
<div class="collapse">
<input type="checkbox" id="collapse-section6" checked aria-hidden="true"> <label for="collapse-section6" aria-hidden="true"><strong>V1.4.0 / 29-October-2025</strong></label>
<div>
<h2 id="main-changes">Main Changes</h2>
<ul>
<li>Maintenance release of <strong>HAL and Low Layer</strong> drivers to include latest corrections</li>
<li><p>Update the following IPs Drivers: ADC, CRYP, DMA, EXTI, FLASH, GENERIC, GPIO, GTZC, HSEM, I2C, IPCC, IWDG, LPTIM, PWR, RCC, RTC, SPI, SUBGHZ, TIM, UART, USART, UTILS, WWDG</p></li>
<li><p>Fixes for MISRAC2012 Rules 13.4_b, 12.3, 10.4 and 8.13 violations</p></li>
</ul>
<h2 id="contents">Contents</h2>
<h3 id="hal-drivers-updates"><strong>HAL Drivers</strong> updates</h3>
<ul>
<li><strong>HAL ADC</strong> driver
<ul>
<li>Add const qualifier for calibrated values (read only, in system flash)<br />
</li>
<li>Fixed MISRA C2012 Rule 8.13 violations</li>
</ul></li>
<li><strong>HAL CRYP</strong> driver
<ul>
<li>Fixed MISRA C2012 Rule 8.13 violations<br />
</li>
<li>Fixed MISRA C2012 Rule 10.4_a violations</li>
</ul></li>
<li><strong>HAL DMA</strong> driver
<ul>
<li>Rebase wl code against the most recent c7amba_dma1 reference branch<br />
</li>
<li>Fix MISRA PC Lint issue against rule-11.9</li>
</ul></li>
<li><strong>HAL EXTI</strong> driver
<ul>
<li>Fixed MISRA C2012 Rule 8.13 violations</li>
</ul></li>
<li><strong>HAL FLASH</strong> driver
<ul>
<li>Fix bitwise comparison that otherwise always evaluates to false<br />
</li>
<li>Fixed MISRA C2012 Rule 8.13 violations</li>
</ul></li>
<li><strong>HAL GENERIC</strong> driver
<ul>
<li>Fixed timer timebase initialization sequence by registering the callback before starting the timer to ensure correct callback handling in FreeRTOS projects</li>
<li>Fixed MISRA C2012 Rule 8.13 violations</li>
</ul></li>
<li><strong>HAL GPIO</strong> driver
<ul>
<li>Fixed MISRA C2012 Rule 8.13 violations</li>
</ul></li>
<li><strong>HAL GTZC</strong> driver
<ul>
<li>Fixed MISRA C2012 Rule 8.13 violations</li>
</ul></li>
<li><strong>HAL HSEM</strong> driver
<ul>
<li>Fix an issue where LL_HSEM_1StepLock uses HSEM_R_LOCK instead of HSEM_RLR_LOCK while checking the RLR register<br />
</li>
<li>Macro update to be aligned with register name in CMSIS<br />
</li>
<li>Update LL HSEM description and define to be aligned with the correct number of semaphores</li>
</ul></li>
<li><strong>HAL I2C</strong> driver
<ul>
<li>Update HAL I2C driver to disable all interrupts after end of transaction.</li>
</ul></li>
<li><strong>HAL IPCC</strong> driver
<ul>
<li>Fixed MISRA C2012 Rule 8.13 violations</li>
</ul></li>
<li><strong>HAL IWDG</strong> driver
<ul>
<li>Fixed MISRA C2012 Rule 8.13 violations</li>
</ul></li>
<li><strong>HAL LPTIM</strong> driver
<ul>
<li>Removed redundant IS_LPTIM_AUTORELOAD macro</li>
</ul></li>
<li><strong>HAL PWR</strong> driver
<ul>
<li>Fixed MISRA C2012 Rule 8.13 violations</li>
</ul></li>
<li><strong>HAL RCC</strong> driver
<ul>
<li>Correct LSE config macro regarding LSESYS handling</li>
</ul></li>
<li><strong>HAL RTC</strong> driver
<ul>
<li>Update STM32CubeIDE projects to fix the location of .size directive in startup code to allow proper size information of vector table<br />
</li>
<li>Fixed MISRA C2012 Rule 13.4_b violations<br />
</li>
<li>Fixed MISRA C2012 Rule 12.3 violations</li>
</ul></li>
<li><strong>HAL SPI</strong> driver
<ul>
<li>Rebase wl code against the most recent c7amba_spi2s1 reference branch<br />
</li>
<li>Fix compilation error in SPI validation code</li>
</ul></li>
<li><strong>HAL SUBGHZ</strong> driver
<ul>
<li>Pass CRC status info in upper layer<br />
</li>
<li>Fixed MISRA C2012 Rule 8.13 violations</li>
</ul></li>
<li><strong>HAL TIM</strong> driver
<ul>
<li>Assert check for the right channels<br />
</li>
<li>Fixed typo in PWM symmetric mode related constants names</li>
</ul></li>
<li><strong>HAL UART</strong> driver
<ul>
<li>Rework of UART_WaitOnFlagUntilTimeout() API to avoid being stuck forever when UART overrun error occurs and to enhance behavior</li>
</ul></li>
<li><strong>HAL USART</strong> driver
<ul>
<li>__HAL_LOCK() removal from HAL_xxx_RegisterCallback()/HAL_xxx_UnRegisterCallback()</li>
</ul></li>
<li><strong>HAL UTILS</strong> driver
<ul>
<li>Fixed MISRA C2012 Rule 8.13 violations</li>
</ul></li>
<li><strong>HAL WWDG</strong> driver
<ul>
<li>Fixed MISRA C2012 Rule 8.13 violations</li>
</ul></li>
</ul>
<p><br />
</p>
<h2 id="known-limitations">Known Limitations</h2>
<p>None</p>
<h2 id="development-toolchains-and-compilers">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V9.20.1 + <a href="./../../Utilities/PC_Software/EWARMv8_STM32WLxx_V4.9_Signed.zip">Patch EWARM</a></li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.36 + <a href="./../../Utilities/PC_Software/Keil.STM32WLxx_DFP.1.1.1.zip">Keil DFP V1.1.1 Pack</a></li>
<li>STM32CubeIDE 1.11.0 (GNU Tools for STM32 10.3-2021.10)</li>
</ul>
<h2 id="supported-devices-and-boards">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32WL55xx</li>
<li>STM32WL54xx</li>
<li>STM32WLE5xx</li>
<li>STM32WLE4xx</li>
<li>STM32WL5Mxx</li>
</ul>
<h2 id="backward-compatibility">Backward Compatibility</h2>
<p>Not applicable</p>
<h2 id="dependencies">Dependencies</h2>
<p>None</p>
<p><br />
</p>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section5" aria-hidden="true"> <label for="collapse-section5" aria-hidden="true"><strong>V1.3.1 / 20-December-2024</strong></label>
<div>
<h2 id="main-changes-1">Main Changes</h2>
<ul>
<li>Patch release of <strong>HAL and Low Layer</strong> drivers to include latest corrections</li>
<li>Update the following IPs Drivers: ADC, CORTEX, CRYP, DAC, GENERIC, GPIO, I2C, SMBUS, SPIU, SUBGHZ, TIM, UART, UTILS</li>
</ul>
<h2 id="contents-1">Contents</h2>
<h3 id="hal-drivers-updates-1"><strong>HAL Drivers</strong> updates</h3>
<ul>
<li><strong>HAL ADC</strong> driver
<ul>
<li>Fix MISRA-C 2012 Rule 15.7 issue</li>
<li>Improve de-init sequence by reset clock configuration on last step (otherwise, under specific clock source selection, some parameters can be not reset)</li>
<li>Add CFGR1_CHSELRMOD bit to be reset by LL_ADC_DeInit() function</li>
</ul></li>
<li><strong>HAL CORTEX</strong> driver
<ul>
<li>Update HAL_MPU_ConfigRegion() to allow the configuration of the MPU registers independently of the value of Enable/Disable field and add new APIs HAL_MPU_EnableRegion() / HAL_MPU_DisableRegion()</li>
</ul></li>
<li><strong>HAL CRYP</strong> driver
<ul>
<li>Update AES GCM in interrupt mode to avoid Computation Completed IRQ fires before the DINR pointer increment</li>
<li>Update Crypt/Decrypt IT processes to avoid Computation Completed IRQ fires before the DINR pointer increment</li>
</ul></li>
<li><strong>HAL DAC</strong> driver
<ul>
<li>Fix HAL DAC calibration procedure (function HAL_DACEx_SelfCalibrate() ) to manage case of calibration factor equal to range maximum value (previously, in this case calibration factor was reset, leading to voltage accuracy not optimal)</li>
<li>Update DAC buffer calibration according to Reference Manual</li>
</ul></li>
<li><strong>HAL Generic</strong> driver
<ul>
<li>Update of HAL_GetTickFreq() brief</li>
</ul></li>
<li><strong>HAL I2C</strong> driver
<ul>
<li>Remove HAL DMA dependency thanks to the HAL_DMA_MODULE_ENABLED define</li>
<li>Solve Slave No stretch not functional by using HAL Slave interface</li>
<li>Update I2C_WaitOnFlagUntilTimeout() API to handle error case</li>
<li>Update HAL_I2C_Slave_Transmit() to check if the received NACK is the good one</li>
<li>Update HAL_I2C_Init() API to clear ADD10 bit in 7 bit addressing mode</li>
<li>Update I2C_GENERATE_START() macro to generate stop automatically in 10 bit addressing mode</li>
<li>Remove the unusable code in function HAL_I2C_IsDeviceReady</li>
<li>Enhance HAL code quality for MISRA-C Rule-8.13 by adding const qualifiers</li>
<li>Update I2C_WaitOnRXNEFlagUntilTimeout to check I2C_FLAG_AF independently from I2C_FLAG_RXNE</li>
<li>Update HAL I2C driver to prefetch data before starting the transmission: implementation of errata sheet workaround I2C2-190208 : Transmission stalled after first byte</li>
<li>Update I2C_Slave_ISR_IT, I2C_Slave_ISR_DMA and I2C_ITSlaveCplt to prevent the call of HAL_I2C_ListenCpltCallback twice</li>
<li>Update HAL_I2C_Mem_Write_IT API to initialize XferSize at 0</li>
<li>Enhance HAL I2C to be thread safe</li>
</ul></li>
<li><strong>HAL SMBUS</strong> driver
<ul>
<li>Update SMBUS_ITErrorHandler to flush TXDR just in case of error</li>
<li>Enhance HAL code quality for MISRA-C Rule-8.13 by adding const qualifiers</li>
<li>Update HAL SMBUS driver to prefetch data before starting the transmission: implementation of errata sheet workaround I2C2-190208 : Transmission stalled after first byte</li>
</ul></li>
<li><strong>HAL SPI</strong> driver
<ul>
<li>Update HAL_SPI_TransmitReceive API to set the bit CRCNEXT in case of one byte transaction</li>
<li>Update IT API to enable interrupts after process unlock</li>
<li>Fix driver to don’t update state in case of error (HAL_SPI_STATE_READY will be set only in case of HAL_TIMEOUT)</li>
</ul></li>
<li><strong>HAL SUBGHZ</strong> driver
<ul>
<li>Change macro from ‘CM0PLUS’ to ‘CORE_CM0PLUS’ as in preprocessor directives</li>
</ul></li>
<li><strong>HAL TIM</strong> driver
<ul>
<li>Update interrupt flag is cleared when the update event is generated by software</li>
<li>Remove multiple volatile reads or writes in interrupt handler for better performance</li>
</ul></li>
<li><strong>HAL UART</strong> driver
<ul>
<li>Avoid RTOF flag to be cleared by a transmit process in polling mode</li>
<li>Fix incorrect gState check in HAL_UART_RegisterRxEventCallback/HAL_UART_UnRegisterRxEventCallback to allow user Rx Event Callback registration when a transmit is ongoing</li>
<li>Update initialisation sequence for TXINV, RXINV and TXRXSWAP settings</li>
</ul></li>
<li><strong>HAL UTILS</strong> driver
<ul>
<li>Fix UFQFPN48 package definition<br />
</li>
</ul></li>
</ul>
<h3 id="ll-drivers-updates"><strong>LL Drivers</strong> updates</h3>
<ul>
<li><strong>LL GPIO</strong> driver
<ul>
<li>Remove a redundant call to LL_GPIO_SetPinMode() within the LL_GPIO_Init() API</li>
</ul></li>
<li><strong>LL I2C</strong> driver
<ul>
<li>Update LL_I2C_HandleTranfer function to prevent undefined behavior of volatile usage before updating the CR2 register</li>
<li>Enhance HAL code quality for MISRA-C Rule-8.13 by adding const qualifiers<br />
</li>
</ul></li>
</ul>
<h2 id="known-limitations-1">Known Limitations</h2>
<p>None</p>
<h2 id="development-toolchains-and-compilers-1">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V9.20.1 + <a href="./../../Utilities/PC_Software/EWARMv8_STM32WLxx_V4.9_Signed.zip">Patch EWARM</a></li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.36 + <a href="./../../Utilities/PC_Software/Keil.STM32WLxx_DFP.1.1.1.zip">Keil DFP V1.1.1 Pack</a></li>
<li>STM32CubeIDE 1.11.0 (GNU Tools for STM32 10.3-2021.10)</li>
</ul>
<h2 id="supported-devices-and-boards-1">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32WL55xx</li>
<li>STM32WL54xx</li>
<li>STM32WLE5xx</li>
<li>STM32WLE4xx</li>
<li>STM32WL5Mxx</li>
</ul>
<h2 id="backward-compatibility-1">Backward Compatibility</h2>
<p>Not applicable</p>
<h2 id="dependencies-1">Dependencies</h2>
<p>None</p>
<p><br />
</p>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section4" aria-hidden="true"> <label for="collapse-section4" aria-hidden="true"><strong>V1.3.0 / 09-November-2022</strong></label>
<div>
<h2 id="main-changes-2">Main Changes</h2>
<ul>
<li>Maintenance release of <strong>HAL and Low Layer</strong> drivers to include latest corrections</li>
<li>Remove HAL_LOCK/HAL_UNLOCK calls in HAL_xxxx_RegisterCallback &amp; HAL_xxxx_UnregisterCallback for IPs (DAC, IRDA, LPTIM, SMARTCARD, TIM, UART, USART)</li>
<li>Enhance code quality (MISRA-C rules 8.13, 11.9) for some drivers: ADC, COMP, DMA, IRDA, LPTIM, SMARTCARD, TIM, UART, USART</li>
</ul>
<h2 id="contents-2">Contents</h2>
<h3 id="hal-drivers-updates-2"><strong>HAL Drivers</strong> updates</h3>
<ul>
<li><strong>HAL ADC</strong> driver
<ul>
<li>Disable AutoPowerOff when performing calibration</li>
<li>Rename ADC_TRx registers to AWDxTR to be in accordance with the Reference Manual</li>
</ul></li>
<li><strong>HAL CORTEX</strong> driver
<ul>
<li>Remove #define LL_MPU_TEX_LEVEL4 (no Level 2 cache for STM32 SoC with Armv7-M cortex)</li>
</ul></li>
<li><strong>HAL CRC</strong> driver
<ul>
<li>Add filter in HAL_CRCEx_Polynomial_Set() function to exclude even polynomials</li>
</ul></li>
<li><strong>HAL CRYP</strong> driver
<ul>
<li>Add interleaved mode</li>
</ul></li>
<li><strong>HAL DAC</strong> driver
<ul>
<li>Fix HAL_GetTick() timeout vulnerability</li>
<li>Return HAL_ERROR if configuration is not available on device</li>
</ul></li>
<li><strong>HAL EXTI</strong> driver
<ul>
<li>Fix computation of pExtiConfig-&gt;GPIOSel in HAL_EXTI_GetConfigLine()</li>
</ul></li>
<li><strong>HAL Generic</strong> driver
<ul>
<li>Add HAL_RADIO APIs to handle Radio services (only for STM32WL5M)</li>
</ul></li>
<li><strong>HAL I2C</strong> driver
<ul>
<li>Fix Timeout issue using HAL MEM interface through FreeRTOS</li>
<li>Fix I2C_IsErrorOccurred returning error if timeout is detected</li>
<li>Fix ADDRF flag cleared too early when the restart is received but the direction has changed</li>
</ul></li>
<li><strong>HAL IRDA</strong> driver
<ul>
<li>Fix wrong cast when computing the USARTDIV value in IRDA_SetConfig()</li>
</ul></li>
<li><strong>HAL LPTIM</strong> driver
<ul>
<li>Enhance LPTIM state management</li>
<li>Fix IS_LPTIM_AUTORELOAD &amp; IS_LPTIM_PERIOD macros to check that AutoReload value must be strictly greater than 0</li>
</ul></li>
<li><strong>HAL RCC</strong> driver
<ul>
<li>Optimize HAL_RCC_OscConfig function when checking if oscillator is ready</li>
<li>Optimize HAL_RCC_GetOscConfig function</li>
<li>Remove GPIO configuration in HAL_RCCEx_EnableLSCO &amp; HAL_RCCEx_DisableLSCO functions</li>
</ul></li>
<li><strong>HAL RTC</strong> driver
<ul>
<li>Improve HAL_RTC_Init function to avoid initialization if already done</li>
</ul></li>
<li><strong>HAL SMARTCARD</strong> driver
<ul>
<li>Fix wrong cast when computing the USARTDIV value in SMARTCARD_SetConfig() function</li>
</ul></li>
<li><strong>HAL SUBGHZ</strong> driver
<ul>
<li>Clear the interrupt CR register just after having read it</li>
<li>Support new feature LoraFHSS (Lora Frequency Hopping Spread Spectrum)</li>
<li>Add new state HAL_SUBGHZ_STATE_RESET_RF_READY to avoid to reinitialize RF on existing from Standby mode</li>
</ul></li>
<li><strong>HAL TIM</strong> driver
<ul>
<li>Improve driver robustness against wrong period values</li>
<li>Improve driver robustness against wrong DMA related parameters</li>
<li>Add new __HAL_TIM_SELECT_CCDMAREQUEST() macro to select CCx DMA source</li>
</ul></li>
<li><strong>HAL UART</strong> driver
<ul>
<li>Fix wrong cast when computing the USARTDIV value in UART_SetConfig() function</li>
<li>Add HAL_UARTEx_GetRxEventType function to retrieve the type of event that has led the RxEventCallback execution</li>
<li>Remove HAL_LOCK/HAL_UNLOCK calls in HAL UART Tx and Rx APIs to fix a concurrent access issue</li>
<li>Disable the Receiver Timeout Interrupt when data reception is completed</li>
</ul></li>
</ul>
<p><br />
</p>
<h3 id="ll-drivers-updates-1"><strong>LL Drivers</strong> updates</h3>
<ul>
<li><strong>LL LPTIM</strong> driver
<ul>
<li>Enhance code quality by renaming all functions LL_LPTIM_ClearFLAG_Xxxxx with LL_LPTIM_ClearFlag_Xxxxx</li>
</ul></li>
<li><strong>LL System</strong> driver
<ul>
<li>Fix LL_SYSCFG_GetEXTISource function which returned wrong result on M4 core</li>
</ul></li>
<li><strong>LL USART</strong> driver
<ul>
<li>Fix compilation warnings generated with ARMV6 compiler</li>
</ul></li>
<li><strong>LL Utils</strong> driver
<ul>
<li>Fix a wrong parameter of __LL_RCC_CALC_MSI_FREQ given erroneous PLL frequency</li>
</ul></li>
</ul>
<p><br />
</p>
<h2 id="known-limitations-2">Known Limitations</h2>
<p>None</p>
<h2 id="development-toolchains-and-compilers-2">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V9.20.1 + <a href="./../../Utilities/PC_Software/EWARMv8_STM32WLxx_V4.9_Signed.zip">Patch EWARM</a></li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.36 + <a href="./../../Utilities/PC_Software/Keil.STM32WLxx_DFP.1.1.1.zip">Keil DFP V1.1.1 Pack</a></li>
<li>STM32CubeIDE 1.11.0 (GNU Tools for STM32 10.3-2021.10)</li>
</ul>
<h2 id="supported-devices-and-boards-2">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32WL55xx</li>
<li>STM32WL54xx</li>
<li>STM32WLE5xx</li>
<li>STM32WLE4xx</li>
<li>STM32WL5Mxx</li>
</ul>
<h2 id="backward-compatibility-2">Backward Compatibility</h2>
<p>Not applicable</p>
<h2 id="dependencies-2">Dependencies</h2>
<p>None</p>
<p><br />
</p>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section3" aria-hidden="true"> <label for="collapse-section3" aria-hidden="true"><strong>V1.2.0 / 4-February-2022</strong></label>
<div>
<h2 id="main-changes-3">Main Changes</h2>
<ul>
<li>Maintenance release of <strong>HAL and Low Layer</strong> drivers to include latest corrections</li>
<li>All source files: update disclaimer to add reference to the new license agreement</li>
<li>Correct English spelling errors and typos</li>
</ul>
<h2 id="contents-3">Contents</h2>
<h3 id="hal-drivers-updates-3"><strong>HAL Drivers</strong> updates</h3>
<ul>
<li><strong>HAL ADC</strong> driver
<ul>
<li>Enhance ADC calibration to reduce noise effect</li>
<li>Fix write access to registers ADC_CFGR1 and ADC_CFGR2 in HAL_ADC_Init() and HAL_ADC_AnalogWDGConfig() functions</li>
</ul></li>
<li><strong>HAL GPIO</strong> driver
<ul>
<li>Reorder EXTI config in HAL_GPIO_Init/HAL_GPIO_DeInit to avoid unexpected level detection</li>
<li>Add new HAL_GPIO_WriteMultipleStatePin() API for multiple pin access in same cycle</li>
</ul></li>
<li><strong>HAL I2C</strong> driver
<ul>
<li>Fix written reserved bit 28 in I2C_CR2 register</li>
<li>Improve I2C_WaitOnFlagUntilTimeout() description to match code</li>
<li>Update to handle errors in polling mode</li>
<li>Rename I2C_IsAcknowledgeFailed() to I2C_IsErrorOccurred() and correctly manage when error occurs</li>
<li>Fix some communication issue due to low system frequency execution (HSI)</li>
</ul></li>
<li><strong>HAL IRDA</strong> driver
<ul>
<li>Improve header description of IRDA_WaitOnFlagUntilTimeout() function</li>
<li>Add a check on the IRDA parity before enabling the parity error interrupt</li>
</ul></li>
<li><strong>HAL LPTIM</strong> driver
<ul>
<li>Add check on PRIMASK register to prevent from enabling unwanted global interrupts within LPTIM_Disable() and LL_LPTIM_Disable()</li>
</ul></li>
<li><strong>HAL RCC</strong> driver
<ul>
<li>Enhance RCC_MCOx in order to support both MCO number and AF mapping</li>
</ul></li>
<li><strong>HAL SMARTCARD</strong> driver
<ul>
<li>Improve header description of SMARTCARD_WaitOnFlagUntilTimeout() function</li>
</ul></li>
<li><strong>HAL SMBUS</strong> driver
<ul>
<li>Add new APIs to support wake up capability:
<ul>
<li>HAL_SMBUSEx_EnableWakeUp()</li>
<li>HAL_SMBUSEx_DisableWakeUp()</li>
</ul></li>
<li>Update to fix issue of mismatched data received by master in case of data size to be transmitted by the slave is greater than the data size to be received by the master</li>
<li>Add flush on TX register</li>
</ul></li>
<li><strong>HAL TIM</strong> driver
<ul>
<li>Fix incorrect behavior of the timer if input signal changes before the end of timer configuration</li>
</ul></li>
<li><strong>HAL UART</strong> driver
<ul>
<li>Improve header description of UART_WaitOnFlagUntilTimeout() function</li>
<li>Add a check on the UART parity before enabling the parity error interruption</li>
</ul></li>
<li><strong>HAL USART</strong> driver
<ul>
<li>Improve header description of USART_WaitOnFlagUntilTimeout() function</li>
<li>Add a check on the USART parity before enabling the parity error interruption</li>
</ul></li>
</ul>
<p><br />
</p>
<h3 id="ll-drivers-updates-2"><strong>LL Drivers</strong> updates</h3>
<ul>
<li><strong>LL ADC</strong> driver
<ul>
<li>Fix MISRA warning register shift overflow</li>
</ul></li>
<li><strong>LL CORTEX</strong> driver
<ul>
<li>Rename LL_CPUID_GetConstant() to LL_CPUID_GetArchitecture()</li>
</ul></li>
<li><strong>LL CRC</strong> driver
<ul>
<li>Rectified <span class="citation" data-cites="brief">@brief</span> of LL_CRC_GetOutputDataReverseMode() API</li>
</ul></li>
<li><strong>LL LPUART</strong> driver
<ul>
<li>Remove all reference of TXFECF bit unavailable for LPUART</li>
</ul></li>
<li><strong>LL RCC</strong> driver
<ul>
<li>Add missing API: LL_RCC_PLL_IsEnabledDomain_ADC, LL_RCC_PLL_IsEnabledDomain_RNG, LL_RCC_PLL_IsEnabledDomain_I2S, LL_RCC_PLL_IsEnabledDomain_SYS</li>
<li>Add check of PLL enable bit when a peripheral using PPL P or PLL Q</li>
</ul></li>
<li><strong>LL RNG</strong> driver
<ul>
<li>Fix RNG_HTCFG constant for NIST compliance</li>
</ul></li>
<li><strong>Utils </strong> driver
<ul>
<li>Fix LL_PLL_ConfigSystemClock_HSE to take into account the setting of RCC_CR_HSEPRE when computing pllrfreq<br />
</li>
</ul></li>
</ul>
<h2 id="known-limitations-3">Known Limitations</h2>
<p>None</p>
<h2 id="development-toolchains-and-compilers-3">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.30.1</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.31</li>
<li>STM32CubeIDE 1.9.0 (native GNU ARM 10.3-2021-10 or optional GNU ARM 9-2020-q2-update)</li>
</ul>
<h2 id="supported-devices-and-boards-3">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32WL55xx</li>
<li>STM32WL54xx</li>
<li>STM32WLE5xx</li>
<li>STM32WLE4xx</li>
</ul>
<h2 id="backward-compatibility-3">Backward Compatibility</h2>
<p>Not applicable</p>
<h2 id="dependencies-3">Dependencies</h2>
<p>None</p>
<p><br />
</p>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section2" aria-hidden="true"> <label for="collapse-section2" aria-hidden="true"><strong>V1.1.0 / 16-June-2021</strong></label>
<div>
<h2 id="main-changes-4">Main Changes</h2>
<ul>
<li>Maintenance release of <strong>HAL and Low Layer</strong> drivers to include latest corrections</li>
<li>Update of HAL SMBUS driver to introduce fast mode and fast mode plus
<ul>
<li>Add extension files stm32wlxx_hal_smbus_ex.h/.c for new APIs:
<ul>
<li><em>HAL_SMBUSEx_EnableFastModePlus()</em></li>
<li><em>HAL_SMBUSEx_DisableFastModePlus()</em></li>
</ul></li>
</ul></li>
</ul>
<h2 id="contents-4">Contents</h2>
<h3 id="hal-drivers-updates-4"><strong>HAL Drivers</strong> updates</h3>
<ul>
<li><strong>HAL ADC</strong> driver
<ul>
<li>Update CFGR2 oversampling bitfields conditionally to oversampling enable</li>
<li>Update timeout mechanism to avoid false timeout detection in case of preemption</li>
<li>Update wait_loop_index computation so delay in us is always multiplicated by at least value “1”</li>
</ul></li>
<li><strong>HAL COMP</strong> driver
<ul>
<li>Update wait_loop_index computation so delay in us is always multiplicated by at least value “1”</li>
</ul></li>
<li><strong>HAL CORTEX</strong> driver
<ul>
<li>Disable the smallest MPU region sizes (32B, 64B, 128B) in the M0+ context</li>
</ul></li>
<li><strong>HAL CRYP</strong> driver
<ul>
<li>Update HAL_CRYP_SetConfig() and HAL_CRYP_GetConfig() APIs to set/get the continent of KeyIVConfigSkip correctly</li>
<li>Resolve interrupt mode related GCM decryption issue causing wrong computation of decryption size</li>
<li>Update HAL_CRYP_InCpltCallback() API to fix an incorrect condition call at resumption time</li>
<li>Update CRYP_AESCCM_Process_IT() to fix incorrect CCM header length management when data are fed to the peripheral under interrupt</li>
</ul></li>
<li><strong>HAL EXTI</strong> driver
<ul>
<li>Update HAL_EXTI_GetConfigLine() to set default configuration value of Trigger and GPIOSel before checking each corresponding register</li>
</ul></li>
<li><strong>HAL GPIO</strong> driver
<ul>
<li>Update HAL_GPIO_Init() API to avoid the configuration of PUPDR register when Analog mode is selected</li>
</ul></li>
<li><strong>HAL HSEM</strong> driver
<ul>
<li>Update SemID comment related to the number of semaphores</li>
</ul></li>
<li><strong>HAL I2C</strong> driver
<ul>
<li>Updated I2C_IsAcknowledgeFailed() to avoid keeping I2C in busy state if NACK is received after transmitting register address</li>
</ul></li>
<li><strong>HAL IRDA</strong> driver
<ul>
<li>Fixed typos in the IRDA State definition description</li>
</ul></li>
<li><strong>HAL IWDG</strong> driver
<ul>
<li>Updated HAL_IWDG_Init() API in order to fix HAL_GetTick() timeout vulnerability issue</li>
</ul></li>
<li><strong>HAL LPTIM</strong> driver
<ul>
<li>Update HAL_LPTIM_Init() API implementation to configure digital filter for external clock when LPTIM is clocked by an internal clock source</li>
</ul></li>
<li><strong>HAL PWR</strong> driver
<ul>
<li>Correct HAL_PWREx_DisableInternalWakeUpLine() to update CM0+ register</li>
</ul></li>
<li><strong>HAL RCC</strong> driver
<ul>
<li>Update definition of IS_RCC_OSCILLATORTYPE() macro</li>
<li>Update IS_RCC_PERIPHCLOCK() macro definition depending on targeted derivative</li>
<li>Add new API HAL_RCC_GetResetSource() to get all reset sources and clear flags for next reset</li>
</ul></li>
<li><strong>HAL RNG</strong> driver
<ul>
<li>Update timeout mechanism to avoid false timeout detection in case of preemption</li>
</ul></li>
<li><strong>HAL RTC</strong> driver
<ul>
<li>Update HAL_RTC_DeactivateAlarm() to fix issue where Alarm Autoclear remained activated after deactivating alarm</li>
<li>Update HAL_RTCEx_SetTimeStamp_IT() to avoid the call of TimeStamp callback during the setting of the TimeStamp</li>
<li>Update assertions in HAL_RTC_SetAlarm() and HAL_RTC_SetAlarm_IT() to allow user to unset some Alarm parameters when AlarmMask is set</li>
<li>Update HAL_RTC_DeactivateAlarm() to clear Alarm Flag</li>
<li>Update HAL_RTCEx_DeactivateTimeStamp() to clear TimeStamp flag</li>
<li>Update HAL_RTCEx_DeactivateInternalTimeStamp() to clear Internal TimeStamp flag
<ul>
<li>The flag is cleared only if TSOVF &amp; TSE are set to 0</li>
</ul></li>
<li>Update HAL_RTCEx_DeactivateWakeUpTimer() to clear WakeUpTimer flag</li>
<li>Update HAL_RTCEx_DeactivateSSRU() to clear SSR Underflow flag</li>
<li>Update HAL_RTC_WaitForSynchro() to fix issue to clear RSF flag</li>
</ul></li>
<li><strong>HAL SMARTCARD</strong> driver
<ul>
<li>Fixed typos in the SMARTCARD State definition description</li>
</ul></li>
<li><strong>HAL SMBUS</strong> driver
<ul>
<li>Add support for Fast Mode Plus to be SMBUS Rev3 compliant:
<ul>
<li>Add HAL_SMBUSEx_EnableFastModePlus() and HAL_SMBUSEx_DisableFastModePlus() APIs to manage Fm+</li>
</ul></li>
</ul></li>
<li><strong>HAL SPI</strong> driver
<ul>
<li>Update in SPI_WaitFifoStateUntilTimeout() to fix code optimization issue</li>
<li>Update to fix MISRA-C 2012 Rule-13.2 issue</li>
</ul></li>
<li><strong>HAL SUBGHZ</strong> driver
<ul>
<li>Update HAL_Delay() by a polling loop to avoid blocking situation in case of Systick is mapped on Tick</li>
<li>Update HAL_SUBGHZ_DeInit() to check RF Busy bit and deassert the reset signal on RF side</li>
</ul></li>
<li><strong>HAL TIM</strong> driver
<ul>
<li>Update HAL_TIMEx_OnePulseN_Start and HAL_TIMEx_OnePulseN_Stop (pooling and IT mode) to take into consideration all OutputChannel parameters</li>
<li>Correct CodeSpell typos in HAL TIM drivers</li>
<li>Update timeout mechanism to avoid false timeout detection in case of preemption</li>
<li>Update input capture measurement in DMA mode to avoid zero return values at high frequencies</li>
</ul></li>
<li><strong>HAL UART</strong> driver
<ul>
<li>Remove an invalid FIFO mode configuration from UART_SetConfig() as it is not is not member of UART_InitTypeDef Structure</li>
<li>Update HAL_UART_IRQHandler() API to handle receiver timeout interrupt
<ul>
<li>Update UART receive processes (IT and DMA) to handle the UART receive’s timeout interrupt</li>
</ul></li>
<li>Update arrays definition to be declared as static const</li>
<li>Fix erroneous UART’s handle state in case of error returned after DMA reception start within UART_Start_Receive_DMA()</li>
<li>Update UART ReceptionType management in case of ReceptionToIdle API are called from RxEvent callback</li>
<li>Handling of UART concurrent register access in case of race condition between Tx and Rx transfers (HAL UART and LL LPUART)</li>
</ul></li>
</ul>
<p><br />
</p>
<h3 id="ll-drivers-updates-3"><strong>LL Drivers</strong> updates</h3>
<ul>
<li><strong>LL RCC</strong> driver
<ul>
<li>Private functions made static</li>
</ul></li>
<li><strong>LL RTC</strong> driver
<ul>
<li>Fix wrong reference of RTC instance in LL_RTC_TIME_Init() and LL_RTC_DATE_Init() functions</li>
</ul></li>
<li><strong>LL SPI</strong> driver
<ul>
<li>Updated to set the FRXTH bit for 8bit data in LL_SPI_Init() API</li>
<li>Update LL_SPI_TransmitData8() to avoid casting the result to 8 bits</li>
</ul></li>
<li><strong>LL TIM</strong> driver
<ul>
<li>Updated LL_TIM_GetCounterMode() API to return the correct counter mode</li>
<li>Update reversed description of TIM_LL_EC_ONEPULSEMODE One Pulse Mode</li>
</ul></li>
<li><strong>LL LPUART</strong> driver
<ul>
<li>Handling of UART concurrent register access in case of race condition between Tx and Rx transfers (HAL UART and LL LPUART)</li>
</ul></li>
<li><strong>LL USART</strong> driver
<ul>
<li>Handling of UART concurrent register access in case of race condition between Tx and Rx transfers (HAL UART and LL LPUART)</li>
<li>LL_USART_ClockInit now supports clock phase and clock polarity configuration for SPI_Slave mode</li>
<li>Remove useless check on maximum BRR value by removing IS_LL_USART_BRR_MAX() macro</li>
</ul></li>
</ul>
<p><br />
</p>
<h2 id="known-limitations-4">Known Limitations</h2>
<p>None</p>
<h2 id="development-toolchains-and-compilers-4">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.30.1</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.31</li>
<li>STM32CubeIDE 1.7.0</li>
</ul>
<h2 id="supported-devices-and-boards-4">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32WL55xx</li>
<li>STM32WL54xx</li>
<li>STM32WLE5xx</li>
<li>STM32WLE4xx</li>
</ul>
<h2 id="backward-compatibility-4">Backward Compatibility</h2>
<p>Not applicable</p>
<h2 id="dependencies-4">Dependencies</h2>
<p>None</p>
<p><br />
</p>
</div>
</div>
<div class="collapse">
<input type="checkbox" id="collapse-section1" aria-hidden="true"> <label for="collapse-section1" aria-hidden="true"><strong>V1.0.0 / 28-October-2020</strong></label>
<div>
<h2 id="main-changes-5">Main Changes</h2>
<p><strong>First Official Release</strong></p>
<h2 id="contents-5">Contents</h2>
<p>First official release of LL / HAL Drivers for STM32WLxx series.</p>
<h2 id="known-limitations-5">Known Limitations</h2>
<p>None</p>
<h2 id="development-toolchains-and-compilers-5">Development Toolchains and Compilers</h2>
<ul>
<li>IAR Embedded Workbench for ARM (EWARM) toolchain V8.30.1</li>
<li>RealView Microcontroller Development Kit (MDK-ARM) toolchain V5.28</li>
<li>STM32CubeIDE 1.5.0</li>
</ul>
<h2 id="supported-devices-and-boards-5">Supported Devices and boards</h2>
<p>Supported Devices:</p>
<ul>
<li>STM32WL55xx</li>
<li>STM32WL54xx</li>
<li>STM32WLE5xx</li>
<li>STM32WLE4xx</li>
</ul>
<h2 id="backward-compatibility-5">Backward Compatibility</h2>
<p>Not applicable</p>
<h2 id="dependencies-5">Dependencies</h2>
<p>None</p>
<p><br />
</p>
</div>
</div>
</div>
</div>
<footer class="sticky">
<div class="columns">
<div class="column" style="width:95%;">
<p>For complete documentation on STM32WLxx, visit: <a href="http://www.st.com/stm32wl">www.st.com/stm32wl</a></p>
<p><em>This release note uses up to date web standards and, for this reason, should not be opened with Internet Explorer but preferably with popular browsers such as Google Chrome, Mozilla Firefox, Opera or Microsoft Edge.</em></p>
</div><div class="column" style="width:5%;">
<p><abbr title="Based on template cx626901 version 2.0">Info</abbr></p>
</div>
</div>
</footer>
</body>
</html>
